package com.skzh.uavTask.service;

import com.skzh.uavTask.domain.TaskInfo;
import com.skzh.uavTask.domain.TaskExecRecord;
import com.skzh.uavTask.domain.TaskInfo2;
import com.skzh.uavTask.domain.TaskScheduleVO;

import java.util.List;
import java.util.Map;

public interface ITaskInfoService {
    /**
     * 查询任务列表
     */
    List<TaskInfo> selectTaskList(TaskInfo taskInfo);

    /**
     * 查询任务详细信息
     */
    TaskInfo selectTaskById(Long taskId);

    /**
     * 新增任务
     */
    int insertTask(TaskInfo task);

    /**
     * 修改任务
     */
    int updateTask(TaskInfo task);

    /**
     * 删除任务
     */
    int deleteTaskByIds(Long[] taskIds);

    /**
     * 暂停任务
     */
    int pauseTask(Long taskId);

    /**
     * 终止任务
     */
    int stopTask(Long taskId);

    /**
     * 开始执行任务
     */
    int startTask(Long taskId);

    /**
     * 开始执行任务（指定操作人）
     */
    int startTask(Long taskId, String operateBy);

    /**
     * 查询任务执行记录
     */
    List<TaskExecRecord> selectTaskExecRecordList(Long taskId);

    /**
     * 新增任务执行记录
     */
    int insertTaskExecRecord(TaskExecRecord record);

    /**
     * 任务执行失败
     * @param taskId 任务ID
     * @param errorMsg 错误信息
     * @return 结果
     */
    int failTask(Long taskId, String errorMsg);


    List<TaskScheduleVO> getMonthlySchedule(String yearMonth);

    List<TaskInfo2> selectTaskByDockId(TaskInfo2 taskInfo2);
}
